#pragma once
#include "Mesh.h"
#include "Variable.h"
#include <vector>

class EquationSystem
{
public:
	EquationSystem(Mesh& mesh_in) :
		mesh(mesh_in)
	{
	};
	~EquationSystem() {};

	void SetMesh(const Mesh& mesh_in) { this->mesh = mesh_in; }
	const Mesh& GetMesh() const { return this->mesh; }
	Mesh& GetMesh() { return this->mesh; }

	void AddVariable(const Variable& var) { this->variables.push_back(var); }
	Variable& GetVariable(Id index) { return this->variables[index]; }
	const Variable& GetVariable(Id index) const { return this->variables[index]; }

protected:
	Mesh& mesh;
	std::vector<Variable> variables;
};

